package general;
import java.io.BufferedReader;
import java.io.FileReader;

/**
 * @author Cristovao Rufino
 * 
 * Carregador de arquivos de configuracao CFG
 * Escrito em 19 de Maio de 2009
 */

public class CFGLodader {

	public static int SMTP_DEFAULT_PORT;
	public static int POP3_DEFAULT_PORT;
	public static final int OK = 0;
	
	private static final int NOT_RECON = -1;
	private static final int COMMENT = 0;
	private static final int SMTP = 1;
	private static final int POP3 = 2;
	
	private static final String COMMANDS[] = {
		";",
		"SMTP_DEFAULT_PORT",
		"POP3_DEFAULT_PORT"
	};
	
	/**
	 * @author Cristovao Rufino
	 * 
	 * @return int - Status do Carregamento(0 = OK, -1 = Falha)
	 * 
	 * Carrega um arquivo CFG com as configuracoes do servidor de
	 * SMTP e POP3
	 * No caso de um erro de IO ou algo parecido, ha uma exibicao do
	 * erro e um re
	 */
	
	public static int CFGLoader(){
		
		try {
			
			//Abre o arquivo de configuracao.			
			BufferedReader confFile =
				new BufferedReader( new FileReader("config.cfg"));
			
			String data;
			
			while( (data = confFile.readLine()) != null){
				//Interpreta o comando lido
				interpretCommand(data.toUpperCase());
			}
			
			//Fecha o BufferedReader confFile
			confFile.close();
			
			return OK;
		}
		
		catch(Exception e){
			System.out.println("Um erro ocorreu enquanto abrindo as configuracoes do servidor!");;
			System.out.println(e.getMessage());
			return -1;
		}
	}
	
	/**
	 * @author Cristovao Rufino
	 * @param String command
	 * 
	 * Funcao de interpretacao das linhas do arquivo CFG
	 */
	
	private static void interpretCommand(String command){
		int i=-1;
		String portNum;
		
		for(i = 0; i < COMMANDS.length; i++)
			if(command.indexOf(COMMANDS[i]) != -1)
				break;
		
		switch(i){
			case NOT_RECON:
				System.out.println("Erro na linha '" + command + "'");
				break;
			
			case COMMENT:
				break;
		
			case SMTP:
				portNum = command.substring(command.indexOf('<') + 1,
						command.indexOf('>') );
				SMTP_DEFAULT_PORT = Integer.valueOf(portNum);
				
			case POP3:
				portNum = command.substring(command.indexOf('<') + 1,
						command.indexOf('>') );
				POP3_DEFAULT_PORT = Integer.valueOf(portNum);
		}
		
	}
	
}
